package com.stylefeng.guns.rest.modular.App.service;

import com.baomidou.mybatisplus.service.IService;
import com.stylefeng.guns.core.model.CommonKeyValue;
import com.stylefeng.guns.core.model.Pager;
import com.stylefeng.guns.rest.modular.App.model.TaskInf;

import java.util.List;
import java.util.Map;
/**
  * 任务信息表 Service接口
  * @author 张亚林
  * @Date 2018-11-12 17:05 
 */
public interface ITaskInfService extends IService<TaskInf> {
    /**
     * 驾驶员拒绝任务
     * @param tiId
     * @param trrId
     * @param token
     * @return
     * @throws Exception
     */
    int refuseTask(String tiId,String trrId,String token)throws Exception;
    /**
     * 查询任务信息表列表
     * @param taskInf 任务信息表对象
     * @return
     */
    List<TaskInf> selectListTaskInf(TaskInf taskInf,String token)throws Exception;

    /**
     * 驾驶员首页查询我的任务
     * @param taskInf 任务信息表对象
     * @return
     */
    List<TaskInf> selectFirstListTaskInf(TaskInf taskInf,String token)throws Exception;

	/**
     * 分页查询任务信息表列表
     * @param pager 分页对象
     * @return
     */
    Map pageListTaskInf(Pager pager,String token) throws Exception;

    /**
     * 同一个事务 互斥锁查询
     * @param taskInf 任务信息表对象
     * @return     
     */
    List<TaskInf> selectListTaskInfForUpdate(TaskInf taskInf)throws Exception;

    /**
     * 通过主键id查询的任务信息表列表
     * @param id 主键id
     * @return     
     */
    TaskInf findTaskInfById(String id,String token)throws Exception;


    /**
     * 互斥锁查询任务
     * @param id 主键id
     * @return
     */
    TaskInf findTaskInfForUpdate(String id)throws Exception;
    /**
     * 查询任务信息表返回key-Value属性
     * @param taskInf 系统操作对象
     * @return     
     */
    List<CommonKeyValue> optionsTaskInf(TaskInf taskInf,String token)throws Exception;

    /**
     * 更新任务单信息数据
     * @param taskInf 任务单信息对象
     * @return
     */
    int updateTaskInf(TaskInf taskInf,String token) throws Exception ;

    /**
     * 开始执行任务
     * @param tiId 任务单信息对象
     * @param onAddr 地址
     * @param onPos 执行经纬度
     * @return
     */
    int updateStartTaskInf(String tiId,String  onAddr,String onPos,String token) throws Exception ;
    /**
     * 结束执行任务
     * @param tiId 任务单信息对象
     * @param offAddr 地址
     * @param offPos 结束经纬度
     * @return
     */
    int updateEndTaskInf(String tiId,String offAddr,String offPos,String token) throws Exception ;


    /**
     * 驾驶员选择任务
     * @param tiId
     * @return
     * @throws Exception
     */
    int updateSelectTask(String tiId,String token)throws Exception;
}
